package com.javaee.ejb.session.remote;

import java.util.List;

import javax.ejb.Remote;

import com.javaee.ejb.entity.Conversation;
import com.javaee.ejb.entity.Employee;

@Remote
public interface ConversationManagerRemote {

	/**
	 * Enregistre une conversation
	 * 
	 * @param conversation
	 *            Conversation a enregistrer
	 * @return L'identifiant de la conversation creee
	 */
	public int saveConversation(Conversation conversation);

	/**
	 * Retourne la liste des conversations de l'employe
	 * 
	 * @param employeeId
	 *            Identifiant de l'employe pour lequel on souhaite recuperer les
	 *            conversations
	 * 
	 * @return La liste de toutes les dernieres conversations pour un employe
	 *         donne
	 */
	public List<Conversation> getListByEmployee(int employeeId);

	/**
	 * Retourne la liste des employes avec qui l'employe passe en parametre est
	 * actuellement en discussion pour un projet donne
	 * 
	 * @param employeeId
	 *            Identifiant de l'employe pour lequel on souhaite connaitre les
	 *            interlocuteurs
	 * @param projectId
	 *            Identifiant du projet concerne par les conversations
	 * 
	 * @return Une liste d'Employee
	 */
	public List<Employee> getInterlocutorListByProject(int employeeId,
			int projectId);

	/**
	 * Retourne la liste des conversations pour un projet
	 * 
	 * @param projectId
	 *            Identifiant du project
	 * @return Une liste de conversation
	 */
	public List<Conversation> getListByProjectId(int projectId);

	/**
	 * Retourne un conversation par son identifiant avec l'ensemble de ses
	 * d�pendances
	 * 
	 * @param id
	 *            Identifiant de la conversation
	 * @return Un conversation
	 */
	public Conversation getByIdWithDependencies(int id);

	/**
	 * Retourne un conversation par son identifiant
	 * 
	 * @param id
	 *            Identifiant de la conversation
	 * @return Un conversation
	 */
	public Conversation getById(int id);
}
